package edu.cdnu.utils;

import java.util.Set;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;

@Component
public class JedisUtil {
	
	@Autowired
	JedisPool jedisPool;
	
	/**
	 * set
	 * @param key
	 * @param value
	 * @return
	 */
	public byte[] set(byte[] key ,byte[] value) {
		Jedis jedis=jedisPool.getResource();
		try {
			jedis.set(key,value);
			return value;
		}finally {
			jedis.close();
		}
	}
	
	
	/**
	 * 查询
	 * @param key
	 * @return
	 */
	public byte[] get(byte[] key) {
		Jedis jedis=jedisPool.getResource();
		try {
			return jedis.get(key);
		}finally {
			jedis.close();
		}
	}
	
	/**
	 * 删除
	 * @param key
	 */
	public void del(byte[] key) {
		Jedis jedis=jedisPool.getResource();
		try {
			jedis.del(key);
		}finally {
			jedis.close();
		}
	}
	/**
	 * 
	 * 查询seesion
	 * @param shiro_session_prefix
	 * @return
	 */
	public Set<byte[]> keys(String shiro_session_prefix) {
		Jedis jedis=jedisPool.getResource();
		try {
			return jedis.keys((shiro_session_prefix+"*").getBytes());
		}finally {
			jedis.close();
		}
	}
	
	/**
	 * 设置有效时间
	 * @param key
	 * @param i
	 */
	public void expire(byte[] key ,long i) {
		Jedis jedis=jedisPool.getResource();
		try {
			jedis.expire(key, i);
		}finally {
			jedis.close();
		}
	}
	
	/**----------------------------------------分隔线----------------------------------------**/
//	SerializationUtils.serialize	序列化
//	SerializationUtils.deserialize	反序列化
	
	/**
	 * set
	 * @param key
	 * @param value
	 * @return
	 */
	public String mySet(String key ,String value) {
		Jedis jedis=jedisPool.getResource();
		try {
			jedis.set(key,value);
			return value;
		}finally {
			jedis.close();
		}
	}
	
	/**
	 * get
	 * @param key
	 * @param value
	 * @return
	 */
	public String myGet(String key) {
		Jedis jedis=jedisPool.getResource();
		try {
			return jedis.get(key);
		}finally {
			jedis.close();
		}
	}
	
	/**
	 * 判断key是否存在
	 * @param key
	 * @return
	 */
	public boolean myExists(String key) {
		Jedis jedis=jedisPool.getResource();
		try {
			return jedis.exists(key);
		}finally {
			jedis.close();
		}
	}
	
	/**
	 * 设置有效时间
	 * @param key
	 * @param i
	 */
	public void expire(String key ,long i) {
		Jedis jedis=jedisPool.getResource();
		try {
			jedis.expire(key, i);
		}finally {
			jedis.close();
		}
	}
	
}
